/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package consumo.face.cadastro;

import consumo.entity.Cliente;
import consumo.entity.Concessionaria;
import consumo.entity.Contrato;
import consumo.entity.Tarifa;
import consumo.face.BaseCDIBean;
import consumo.session.ContratoSession;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;

/**
 *
 * @author Carlos Taschetto
 */
@ManagedBean
@ViewScoped
public class ContratoFace extends BaseCDIBean<Contrato>{

    private static final long serialVersionUID = 11L;
    @Inject
    private ContratoSession bean;
    private Cliente selectedCliente;
    private List<Contrato> lista;
    private List<Tarifa> listaTarifa;
    private Concessionaria selectedConce;
    
    private boolean isNew;

    @PostConstruct
    protected void init(){
        atribuiEstadoInicial();
    }
        
    private void atribuiEstadoInicial(){
        lista = null;
        Contrato novo = new Contrato();
        novo.setCliente(selectedCliente);
        setSelectedBean(novo);
    }
    
    /**
     * inicializa uma nova concessionária a ser gravada
     */
    public void doCreate(){
        setIsNew(true);
        Contrato novo = new Contrato();
        novo.setCliente(selectedCliente);
        setSelectedBean(novo);
        System.out.println("criou novo ");
    }
    /**
     * Salva a concessionária
     */
    private void doFinishCreate(){
        System.out.println("tentou salvar "+getSelectedBean());
        bean.save(getSelectedBean());
        lista = bean.getAll(selectedCliente);
    }

    /**
     * Edita uma concessionaria
     */
    private void doEdit(){
        bean.set(getSelectedBean());
        lista = bean.getAll(selectedCliente);
    }
    /**
     * Verifica se é uma nova inserção ou uma alteração
     */
    public void doSave(){
        System.out.println(isIsNew());
        if(isIsNew())
            doFinishCreate();
        else doEdit();
        setIsNew(false);
    }
    
    public void doRemove(){
        bean.remove(getSelectedBean());
        setLista(bean.getAll(selectedCliente));
    }

    public List<Contrato> getLista() {
        if(lista == null){
            lista = bean.getAll(selectedCliente);
        }
        return lista;
    }

    public void setLista(List<Contrato> lista) {
        this.lista = lista;
    }

    public boolean isIsNew() {
        return isNew;
    }

    public void setIsNew(boolean isNew) {
        this.isNew = isNew;
    }

    public void resetIsNew(){
        this.isNew = false;
    }


    public List<Tarifa> getListaTarifa() {
        listaTarifa = bean.getTipoTarifaByConce(selectedConce);
        return listaTarifa;
    }

    public void setListaTarifa(List<Tarifa> listaTarifa) {
        this.listaTarifa = listaTarifa;
    }

    public Concessionaria getSelectedConce() {
        return selectedConce;
    }

    public void setSelectedConce(Concessionaria selectedConce) {
        this.selectedConce = selectedConce;
    }

    public Cliente getSelectedCliente() {
        return selectedCliente;
    }

    public void setSelectedCliente(Cliente selectedCliente) {
        this.selectedCliente = selectedCliente;
    }
    
    

}
